ss = 0
'''
位置参数
    指调用时的参数个数和顺序必须与定义的参数个数和顺序相同

关键字参数
    是在函数调用时，使用"形参名称=值”的方式进行传参，传递参数顺序可以与定义时参数的顺序不同
    
默认值参数
    在函数定义时，给形参指定默认值，调用函数时，如果没有传递参数，则使用默认值


    
'''


# 位置参数的使用
def happy_birthday(name, age):
    print('祝' + name + '生日快乐')
    print(str(age) + '生日快乐')
    # print(f"祝{name}{age}岁生日Happy Birthday to you!")


# happy_birthday('张三')  #个数：只传一个会报错 TypeError: happy_birthday() missing 1 required positional argument: 'age'
# happy_birthday(1800, '张三')  # 顺序：TypeError: can only concatenate str (not "int") to str
happy_birthday('张三', 1800)

# 关键字参数的使用
'''
当完全使用关键字参数传参时：可以不用考虑顺序问题，只需要保证形参名称和数量一致就可以
当同时使用位置参数和关键字参数时:位置参数在前，关键字参数在后，否则语法报错
'''

# happy_birthday(age1=18, name='张三')  # 形参名要一致 TypeError: happy_birthday() got an unexpected keyword argument 'age1'
happy_birthday(age=18, name='张三')  # 关键字传参，顺序可以不用一致,只要数量一致
happy_birthday('张三', age=18)  # 可以位置传参与关键字传参同时使用
# happy_birthday(name='张三', 18)  # 位置参数在前，关键字参数在后原则 SyntaxError: positional argument follows keyword argument
